module qipan_state(
      input clock, // 时钟
      input reset, // 复位 
      input illegal_move, //  检测到非法输入时，禁止写入
      input [8:0] PC_en, //  电脑有效信号
      input [8:0] PL_en, //   玩家有效信号
      output reg[1:0] pos1,pos2,pos3,pos4,pos5,pos6,pos7,pos8,pos9//  储存位置
      );
 // 第一行第一列
 always @(posedge clock or negedge reset)
  begin
    if(!reset) 
    pos1 <= 2'b00;
    else begin
    if(illegal_move==1'b1)
      pos1 <= pos1;// 当非法输入信号为高电平时，pos1保持
    else if(PC_en[0]==1'b1)
      pos1 <= 2'b10; // 电脑下棋子时，保存位置
    else if (PL_en[0]==1'b1)
      pos1 <= 2'b01;// 玩家下棋子时，保存位置
    else 
      pos1 <= pos1;
    end 
  end 
  //
   always @(posedge clock or negedge reset)
  begin
    if(!reset) 
    pos2 <= 2'b00;
    else begin
    if(illegal_move==1'b1)
      pos2 <= pos2;// 当非法输入信号为高电平时，保持
    else if(PC_en[1]==1'b1)
      pos2 <= 2'b10; // 电脑下棋子时，保存位置
    else if (PL_en[1]==1'b1)
      pos2 <= 2'b01;// 玩家下棋子时，保存位置
    else 
      pos2 <= pos2;
    end 
  end
   always @(posedge clock or negedge reset)
  begin
    if(!reset) 
    pos3 <= 2'b00;
    else begin
    if(illegal_move==1'b1)
      pos3 <= pos3;// 当非法输入信号为高电平时，保持
    else if(PC_en[2]==1'b1)
      pos3 <= 2'b10; // 电脑下棋子时，保存位置
    else if (PL_en[2]==1'b1)
      pos3 <= 2'b01;// 玩家下棋子时，保存位置
    else 
      pos3 <= pos3;
    end 
  end
 always @(posedge clock or negedge reset)
  begin
    if(!reset) 
    pos4 <= 2'b00;
    else begin
    if(illegal_move==1'b1)
      pos4 <= pos4;// 当非法输入信号为高电平时，保持
    else if(PC_en[3]==1'b1)
      pos4 <= 2'b10; // 电脑下棋子时，保存位置
    else if (PL_en[3]==1'b1)
      pos4 <= 2'b01;// 玩家下棋子时，保存位置
    else 
      pos4 <= pos4;
    end 
  end
  always @(posedge clock or negedge reset)
  begin
    if(!reset) 
    pos5 <= 2'b00;
    else begin
    if(illegal_move==1'b1)
      pos5 <= pos5;// 当非法输入信号为高电平时，保持
    else if(PC_en[4]==1'b1)
      pos5 <= 2'b10; // 电脑下棋子时，保存位置
    else if (PL_en[4]==1'b1)
      pos5 <= 2'b01;// 玩家下棋子时，保存位置
    else 
      pos5 <= pos5;
    end 
  end
  always @(posedge clock or negedge reset)
  begin
    if(!reset) 
    pos6 <= 2'b00;
    else begin
    if(illegal_move==1'b1)
      pos6 <= pos6;// 当非法输入信号为高电平时，保持
    else if(PC_en[5]==1'b1)
      pos6 <= 2'b10; // 电脑下棋子时，保存位置
    else if (PL_en[5]==1'b1)
      pos6 <= 2'b01;// 玩家下棋子时，保存位置
    else 
      pos6 <= pos6;
    end 
  end
   always @(posedge clock or negedge reset)
  begin
    if(!reset) 
    pos7 <= 2'b00;
    else begin
    if(illegal_move==1'b1)
      pos7 <= pos7;// 当非法输入信号为高电平时，保持
    else if(PC_en[6]==1'b1)
      pos7 <= 2'b10; // 电脑下棋子时，保存位置
    else if (PL_en[6]==1'b1)
      pos7 <= 2'b01;// 玩家下棋子时，保存位置
    else 
      pos7 <= pos7;
    end 
  end
     always @(posedge clock or negedge reset)
  begin
    if(!reset) 
    pos8 <= 2'b00;
    else begin
    if(illegal_move==1'b1)
      pos8 <= pos8;// 当非法输入信号为高电平时，保持
    else if(PC_en[7]==1'b1)
      pos8 <= 2'b10; // 电脑下棋子时，保存位置
    else if (PL_en[7]==1'b1)
      pos8 <= 2'b01;// 玩家下棋子时，保存位置
    else 
      pos8 <= pos8;
    end 
  end
       always @(posedge clock or negedge reset)
  begin
    if(!reset) 
    pos9 <= 2'b00;
    else begin
    if(illegal_move==1'b1)
      pos9 <= pos9;// 当非法输入信号为高电平时，保持
    else if(PC_en[8]==1'b1)
      pos9 <= 2'b10; // 电脑下棋子时，保存位置
    else if (PL_en[8]==1'b1)
      pos9 <= 2'b01;// 玩家下棋子时，保存位置
    else 
      pos9 <= pos9;
    end 
  end


   
endmodule 